MySQL LIMIT 和 GROUP BY 与 JOIN
全部标签 在执行groupby后,有什么方法可以保留大型数据框的原始索引吗?我需要这样做的原因是因为我需要做一个内部合并回到我原来的df(在我的groupby之后)以重新获得那些丢失的列。索引值是执行合并的唯一“唯一”列。有谁知道我怎样才能做到这一点?我的DataFrame非常大。我的groupby看起来像这样:df.groupby(['col1','col2']).agg({'col3':'count'}).reset_index()这会从我想要保留的原始数据框中删除我的原始索引。 最佳答案 您可以通过reset_index将您的索引提升到
我有一个大数据框(4000万行),如果值满足groupby对象中的条件,我想根据一列过滤掉行。例如,这里是一些随机数据。“字母”列实际上有数千个唯一值:xyzletter0478630e158928b2965942a379645e4778037d5669135d6963152d756826e8789614a9226013e1075829d1155429c12833140e1337702c14536766a15763378d16646781b1723941d1810131e1952113d在'letter'列上应用groupby,并为每个字母获取x列的总和:df.groupby('let
在pandas数据框中,可以使用函数对其索引进行分组。我希望定义一个应用于列的函数。我希望按两列分组,但我需要按任意函数foo对第二列进行分组:group_sum=df.groupby(['name',foo])['tickets'].sum()如何定义foo以将第二列分为两组,例如,根据值是否为>0来划分?或者,是否使用了完全不同的方法或语法? 最佳答案 Groupby可以接受标签和系列/数组的任意组合(只要数组的长度与数据框的长度相同),因此您可以将函数映射到您的列并将其传递到groupby,例如df.groupby(['nam
这显然很简单,但作为一个pandas新手,我被卡住了。我有一个包含3列的CSV文件,即州、bene_1_count和bene_2_count。我想计算给定状态下“bene_1_count”和“bene_2_count”的比率。df=pd.DataFrame({'state':['CA','WA','CO','AZ']*3,'bene_1_count':[np.random.randint(10000,99999)for_inrange(12)],'bene_2_count':[np.random.randint(10000,99999)for_inrange(12)]})我正在尝试以下
获取groupby元素的随机样本的最佳方法是什么?据我了解,groupby只是一个可迭代的组。如果我想选择N=200元素,我会为可迭代对象执行此操作的标准方法是:rand=random.sample(data,N)如果你尝试上面的数据是“分组”的,结果列表的元素出于某种原因是元组。我找到了以下随机选择单个键groupby元素的示例,但这不适用于多键groupby。来自,Howtoaccesspandasgroupbydataframebykeycreategroupbyobjectgrouped=df.groupby('some_key')pickNdataframesandgrabt
我们有一个列表:myList=[1,"two"]并且想要打印出来,通常我会使用类似的东西:"{0}and{1}".format(*myList)但你也可以这样做:"and".join(myList)但不幸的是:>>>"and".join(myList)Traceback(mostrecentcalllast):File"",line1,inTypeError:sequenceitem0:expectedstring,intfound为什么它不自动将接收到的列表转换为字符串?什么时候不需要它来将它们转换为字符串?我是否遗漏了一些微小的边缘情况? 最佳答案
我尝试从数据框中计算特定的分位数值,如下面的代码所示。分行计算没有问题。尝试运行最后两行时,出现以下错误:AttributeError:'SeriesGroupBy'objecthasnoattribute'quantile(0.25)'我该如何解决这个问题?importpandasaspddf=pd.DataFrame({'x':[0,1,0,1,0,1,0,1],'y':[7,6,5,4,3,2,1,0],'number':[25000,35000,45000,50000,60000,70000,65000,36000]})f={'number':['median','std','
我有一个DataFrame,其中有一列包含一些带有各种负值的错误数据。我想用它们所在的组的平均值替换值对于作为NA的缺失值,我会这样做:data=df.groupby(['GroupID']).columndata.transform(lambdax:x.fillna(x.mean()))但是如何在类似x的条件下执行此操作?谢谢! 最佳答案 使用@AndyHayden的示例,您可以将groupby/transform与replace一起使用:df=pd.DataFrame([[1,1],[1,-1],[2,1],[2,2]],col
我有一个像下面这样的pandasDataFrame。df=pd.DataFrame([[1.1,1.1,1.1,2.6,2.5,3.4,2.6,2.6,3.4,3.4,2.6,1.1,1.1,3.3],list('AAABBBBABCBDDD'),[1.1,1.7,2.5,2.6,3.3,3.8,4.0,4.2,4.3,4.5,4.6,4.7,4.7,4.8],['x/y/z','x/y','x/y/z/n','x/u','x','x/u/v','x/y/z','x','x/u/v/b','-','x/y','x/y/z','x','x/u/v/w'],['1','3','3','2'
我有一个交易者交易数据集,其中感兴趣的变量是Buy/Sell,它是二进制的,如果交易是买入,则值为1,如果是卖出,则值为0。示例如下所示:TraderBuy/SellA1A0B1B1B0C1C0C0我想计算每个交易者的净买入/卖出,如果交易者有超过50%的交易是买入,他将有一个买入/卖出为1,如果他的买入少于50%,那么他的Buy/Sell将为0,如果恰好为50%,他将有NA(并且在未来的计算中将被忽略).因此,对于交易者A,买入比例为(买入数量)/(交易者总数)=1/2=0.5,得出NA。对于交易者B,它是2/3=0.67,这给出了1对于交易员C,它是1/3=0.33,这给出了0